#ifndef __M_UTIL_H__
#define __M_UTIL_H__

/*日志工具类实现*/
/*
    1.获取系统时间
    * time函数  获取当前时间

    2.判断文件是否存在

    3.获取文件路径
    * stat    跨平台函数  判断文件是否存在

    4.创建目录
    mkdir 创建目录函数

*/

#include <iostream>
#include <ctime>
#include <string>
#include <sys/stat.h>
using namespace std;

namespace TopLog
{
    namespace Unil
    {
        class Data
        {
        public:
            static size_t Gettime() // 获取系统时间
            {
                return (size_t)time(nullptr);
            }
        };

        class File
        {
        public:
            static bool Exists(const std::string &pathname) // 判断文件是否存在
            {
                struct stat buf;
                return stat(pathname.c_str(), &buf) == 0;
            }
            static std::string Path(const std::string &pathname) // 截取路径
            {
                // GTA5.exe
                size_t pos = pathname.find_last_of("/\\");
                if (pos == string::npos)
                    return ".";
                return pathname.substr(0, pos + 1); // 返会最后/位置
            }
            static void CreateDirectory(const std::string &pathname) // 创建目录
            {
                // ./GTA/1.exe
                size_t pos = 0, idx = 0;
                while (idx < pathname.size())
                {
                    pos = pathname.find_first_of("/\\", idx);
                    if (pos == string::npos)
                        mkdir(pathname.c_str(), 0777);
                    string dir = pathname.substr(0, pos + 1); // 截取到最后/位置
                    if (Exists(dir) == true)
                    {
                        idx = pos + 1;
                        continue;
                    }
                    mkdir(dir.c_str(), 0777);
                    idx = pos + 1;
                }
            }
        };
    };
};

#endif
